// File:    Cidade.cs
// Author:  Lucas Bittencourt
// Created: segunda-feira, 7 de novembro de 2011 20:48:44
// Purpose: Definition of Class Cidade

using System;
using System.Text;

namespace DA_OOMModel
{
   public class Cidade
   {
       private int cidIdCidade;
       private string cidNmCidade;
       private decimal cidCdIbge;

       private Iesi.Collections.ISet endereco;
      
      /// <summary>
      /// Property for collection of Endereco
      /// </summary>
      /// <pdGenerated>Default opposite class collection property</pdGenerated>
      public virtual Iesi.Collections.ISet Endereco
      {
         get
         {
            return endereco;
         }
         set
         {
            this.endereco = value;         
         }
      }
      private Estado estado;
      
      /// <summary>
      /// Property for Estado
      /// </summary>
      /// <pdGenerated>Default opposite class property</pdGenerated>
      public virtual Estado Estado
      {
         get
         {
            return estado;
         }
         set
         {
               this.estado = value;
         }
      }
   
      /// <summary>
      /// Get value of property CidIdCidade.
      /// </summary>
      public virtual int CidIdCidade
      {
         get
         {
            return cidIdCidade;
         }
         set
         {
            if (this.cidIdCidade != value)
               this.cidIdCidade = value;
         }
      }
      
      /// <summary>
      /// Get value of property CidNmCidade.
      /// </summary>
      public virtual string CidNmCidade
      {
         get
         {
            return cidNmCidade;
         }
         set
         {
            if (this.cidNmCidade != value)
               this.cidNmCidade = value;
         }
      }
      
      /// <summary>
      /// Get value of property CidCdIbge.
      /// </summary>
      public virtual decimal CidCdIbge
      {
         get
         {
            return cidCdIbge;
         }
         set
         {
            if (this.cidCdIbge != value)
               this.cidCdIbge = value;
         }
      }
   
      /// <summary>
      /// Get and set primary key class
      /// </summary>
      public virtual CidadePK CidadePK
      {
         get 
         {
            return new CidadePK(cidIdCidade);
         }
         set
         {
            if (value != null)
            {
               this.cidIdCidade = value.CidIdCidade;
            }
         }
      }
   
      /// <summary>
      /// Get hash code
      /// </summary>
      /// <pdGenerated>Get hash code</pdGenerated>
      public override int GetHashCode()
      {
         int _hashCode = 0;
         _hashCode = 29 * CidadePK.GetHashCode();
         if (this.cidNmCidade != null) 
            _hashCode += 29 * cidNmCidade.GetHashCode();
      
         _hashCode += 29 * cidCdIbge.GetHashCode();
         return _hashCode;
      }
   
      /// <summary>
      /// Test if two objects are equal
      /// </summary>
      /// <param name="object">Object to compare</param>
      /// <pdGenerated>Test if two objects are equal</pdGenerated>
      public override bool Equals(object obj)
      {
         if (obj == null)
            return false;
         Cidade cast = obj as Cidade;
         if (!(obj is Cidade))
            return false;
         if (!this.CidadePK.Equals(cast.CidadePK))
            return false;
         if (this.cidIdCidade != cast.CidIdCidade)
            return false;
         if (String.Equals(this.cidNmCidade, cast.CidNmCidade) == false)
            return false;
      
         if (this.cidCdIbge != cast.CidCdIbge)
            return false;
      
         return true;
      }
   
      /// <summary>
      /// Get object in string format
      /// </summary>
      /// <pdGenerated>Get object in string format</pdGenerated>
      public override string ToString()
      {
         StringBuilder ret = new StringBuilder();
         ret.Append( "Cidade: " );
         ret.Append( "CidIdCidade='" + cidIdCidade.ToString() + "'");
         if (cidNmCidade != null)
            ret.Append( "CidNmCidade='" + cidNmCidade.ToString() + "'");
         ret.Append( "CidCdIbge='" + cidCdIbge.ToString() + "'");
         return ret.ToString();
      }
   
   }
}